/*
//
//                  INTEL CORPORATION PROPRIETARY INFORMATION
//     This software is supplied under the terms of a license agreement or
//     nondisclosure agreement with Intel Corporation and may not be copied
//     or disclosed except in accordance with the terms of that agreement.
//          Copyright(c) 2004-2006 Intel Corporation. All Rights Reserved.
//
//     Intel Integrated Performance Primitives AAC Encode Sample for Windows*
//
//  By downloading and installing this sample, you hereby agree that the
//  accompanying Materials are being provided to you under the terms and
//  conditions of the End User License Agreement for the Intel Integrated
//  Performance Primitives product previously accepted by you. Please refer
//  to the file ippEULA.rtf or ippEULA.txt located in the root directory of your Intel IPP
//  product installation for more information.
//
//  MPEG-4 and AAC are international standards promoted by ISO, IEC, ITU, ETSI
//  and other organizations. Implementations of these standards, or the standard
//  enabled platforms may require licenses from various entities, including
//  Intel Corporation.
//
*/

#ifndef __FILTERBANK_H
#define __FILTERBANK_H

#include "ippac.h"
#include "ipps.h"
#include "aaccmn_const.h"
#include "aac_enc_int.h"

typedef struct {
  IppsMDCTFwdSpec_16s *p_mdct_fwd_long;
  IppsMDCTFwdSpec_16s *p_mdct_fwd_short;
  Ipp8u  *p_buffer_fwd;

  Ipp16s *KBD_long_wnd_table;
  Ipp16s *KBD_short_wnd_table;
  Ipp16s *sin_long_wnd_table;
  Ipp16s *sin_short_wnd_table;
  Ipp32s *mdct_scaleFactor;
} sFilterbankBlock;

#ifdef  __cplusplus
extern "C" {
#endif

AACStatus InitFilterbank_enc(sFilterbankBlock* pBlock,
                             Ipp8u* mem,
                             Ipp32s *sizeAll);
void FreeFilterbank_enc(sFilterbankBlock* pBlock);
void Filterbank_enc(sFilterbankBlock* p_data,
                    Ipp16s* p_in_samples_1st_part,
                    Ipp16s* p_in_samples_2nd_part,
                    Ipp32s window_sequence,
                    Ipp32s window_shape,
                    Ipp32s prev_window_shape,
                    Ipp16s* p_out_spectrum,
                    Ipp32s* mdct_scaleFactor);
#ifdef  __cplusplus
}
#endif

#endif//__FILTERBANK_H
